1. Field of the Invention
This invention relates to bar code scanning devices. More particularly this invention relates to bar code scanners adapted to read multidimensional bar code and graphical symbologies wherein large quantities of information are embedded in a symbol being read. Using such symbologies substantial time may be required to scan and decode the information, and the invention provides a useful indicator to the user of the scanner's progress toward successful completion of a scanning operation.
2. Description of the Prior Art
It is now common practice to provide an aural indicator upon completion of a bar code scanning operation. In the case of multidimensional bar code reading, the reading operation takes substantially longer than in one-dimensional bar code symbols. In practice several seconds can be required to complete a scan. Some aural indication of scanning progress would be extremely useful. The early forms of two-dimensional bar codes were "stacked" symbologies, and extra short beeps have been inserted upon completion of successful row reads to inform the operator. Such beeps are distracting, and eventually become irritating to the user. This cacophonous approach to informing the user has not achieved wide acceptance in the art.
Newer bar code symbologies, such as PDF417, are characterized by redundant information for purposes of reading accuracy. Consequently it is possible to decode a PDF417 code without scanning the entire symbol. Furthermore, PDF417 contains indicators of the number of rows, the number of data elements in each row, and the degree of redundancy of data. The last characteristic is also known as the security level, which in PDF417, can vary from 0 (no redundancy) to a maximum value of 8. It is thus possible for the scanner to determine the minimum number of code words needed to be decoded in order to evaluate all the encoded information in the symbol, and to measure its progress during the scan.
The specification of PDF417 is known to the art and is disclosed, for example in U.S. Pat. No. 5,243,655, incorporated herein by reference, and in European Patent Application EP 0 432 682. Briefly summarized, PDF417 is a two dimensional (17,4) symbology, a specialization of the (n,k) family of bar codes. In PDF417 a code word comprises 17 bits comprising 4 runs of bars and 4 runs of spaces in differing combinations, which produces a large number of legal patterns. Each space and each bar can vary in width from 1 to 6 arbitrary units, so long as the total number of units in the codeword is 17. Three mutually exclusive subsets or clusters of the set of legal patterns are used in PDF417, each cluster containing 929 code words. Each of the 929 code words can be ordered in a t-sequence, and the patterns in the t-sequences can be mapped to a desired alphabet by suitable translation tables.
Each row of a PDF symbol comprises code words selected from one of the three clusters, and there is a periodic rowwise usage of the three subsets. It is possible to identify the particular cluster to which a codeword belongs by computing a discriminator function: EQU f(X)=(x.sub.1 -x.sub.3 +x.sub.5 -x.sub.7) mod 9
where X is the mark pattern of the codeword; x.sub.1, x.sub.3, x.sub.5, and x.sub.7 represent the width of bars in the pattern; and x.sub.2, x.sub.4, x.sub.6, and x.sub.8 represent the widths of spaces. While 9 clusters are possible, only three are actually used in PDF417, clusters 0, 3, and 6.
In each row of a PDF symbol there is a start pattern, a left row indicator code word, data code words, a right row indicator code word, and a stop pattern. Error correction information may be included in the data code words. The row indicator code words contain information about the organization of the symbol, specifically the row number, the number of rows in the symbol, number of data columns and the security level. Not all of this information is contained in every row indicator code word; instead the information is distributed in a pattern which repeats every three rows.
During a scanning operation the scanner can identify the cluster of a particular codeword, and hence its row identifier modulo 3. This local row identification is particularly useful when the scanning axis is not perfectly aligned with the rows of the symbol, and a transition between two rows occurs during a scanning operation. Detection of row crossing permits "scan stitching"--a mapping of partial row scans into a matrix or memory. Missing pieces in the partially completed matrix can be filled in by other scanned data, possibly from entirely different rows, either because the data is redundantly expressed in the symbol, or with the use of error correction algorithms such as Reed-Solomon codes.
Reading a PDF417 code can be conducted in a known manner on a character-by-character basis in accordance with a two step process. In the first step a code word is scanned and its discriminator function computed. The first step is completed by identifying the cluster of a codeword and determining the value of the t-sequence for the identified cluster. In a second step, or high level decoding, the member of the alphabet that was encoded in the symbol is derived from the value of the t-sequence, using look-up tables or similar.
As some information on a symbol being scanned may not be satisfactorily decoded after a first pass, it is common for the scanner to make repetitive passes before a valid read operation has been accomplished.